---
title: Recursive Chunking
---

Recursive chunking splits documents hierarchically using multiple separators in order of priority. It attempts to split on larger structural elements first (like double newlines), then falls back to smaller separators (single newlines, periods) if chunks are still too large. This respects natural document structure while maintaining size limits.

```python
import asyncio
from agno.agent import Agent
from agno.knowledge.chunking.recursive import RecursiveChunking
from agno.knowledge.knowledge import Knowledge
from agno.knowledge.reader.pdf_reader import PDFReader
from agno.vectordb.pgvector import PgVector

db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"

knowledge = Knowledge(
    vector_db=PgVector(table_name="recipes_recursive_chunking", db_url=db_url),
)

asyncio.run(knowledge.add_content_async(
    url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
    reader=PDFReader(
        name="Recursive Chunking Reader",
        chunking_strategy=RecursiveChunking(),
    ),
))

agent = Agent(
    knowledge=knowledge,
    search_knowledge=True,
)

agent.print_response("How to make Thai curry?", markdown=True)
```

## Recursive Chunking Params

<Snippet file="chunking-recursive.mdx" />
